package com.liuugoqing.behavioral.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * 具体主题（具体被观察者），该角色将有关状态存入具体观察者对象，在具体主题的内部状态发生改变时，给所有注册过的观察者发送通知
 * @Author : liugq
 * @Date : 2022/7/14 11:42
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public class SubscriptionSubject implements Subject {
    private List<Observer> weixinUsers = new ArrayList<Observer>();

    /**
     * 添加订阅者
     * @param observer
     */
    @Override
    public void attach(Observer observer) {
        weixinUsers.add(observer);
    }

    /**
     * 清楚订阅者
     * @param observer
     */
    @Override
    public void detach(Observer observer) {
        weixinUsers.remove(observer);
    }

    /**
     * 发布信息
     * @param message
     */
    @Override
    public void notify(String message) {
        for (Observer observer : weixinUsers) {
            observer.update(message);
        }
    }
}
